//Proxy

// const person = {
//     name:"uu",
//     age:30
// }

// const personProxy = new Proxy(person,{
//     get(target,property){
//        return  property in target ? target[property] : undefined
//     },
//     set(target,property,value){
//         target[property] = value
//     }
// })
// console.log(personProxy.xx)
// console.log(personProxy.age)

//Proxy VS Object.defineProperty()

// Object.defineProperty()只能够监视属性的读写
//Proxy优点
//1，Proxy 能够监视更多对象的操作，例如delete操作，对对象当中方法的调用
// const person = {
//     name:"uu",
//     age:30
// }
// const personProxy = new Proxy(person,{
//     deleteProperxy(target,property){
//         console.log(target,property)
//       delete target[property]
//     }
// })

// delete person.name
// console.log(person)//{ age: 30 }
//2,Proxy 更好的支持数组对象的监视
// const list = []
// const result = new Proxy(list,{
//     set (target,property,value){
//        console.log('set',property,value)
//        target[property] = value
//        return true
//     }
// })
// result.push(100)
//3. proxy是以非侵入的方式监管了对象的读写。一个定义好的对象不需要对对象做任何操作，就可以监视到他内部的读写。Object.defineProperty()就需要用特定的方式，单独去定义对象当中那些需要被监视的属性，对于一个已经存在的对象，需要对它做很多额外的操作。







